<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // 地址：https://leetcode-cn.com/problems/merge-sorted-array/

        // 第一种解法，双指针
        var merge = function (nums1, m, nums2, n) {
            let p1 = 0, p2 = 0;
            let temp = [];
            while (p1 < m || p2 < n) {
                // 如果nums1/nums2已经遍历完了，那么只能操作另外一个数组了~
                if (p1 === m) {
                    temp.push(nums2[p2++]);
                }
                else if (p2 === n) {
                    temp.push(nums1[p1++]);
                }
                // 较小的元素插入temp中（常规思路了这里~）
                else if (nums1[p1] < nums2[p2]) {
                    temp.push(nums1[p1++]);
                }
                else if (nums1[p1] >= nums2[p2]) {
                    temp.push(nums2[p2++]);
                }
            }
            for (let i = 0; i < m + n; i++) {
                nums1[i] = temp[i];
            }
            // return nums1; // 题目就让把nums1修改下，没必要return了哈~核心代码模式就是爽XD
        };

        var nums1 = [1, 2, 3];
        var nums2 = [2, 5, 6];
        // merge(nums1, 3, nums2, 3);
        // console.log(nums1);
        // console.log('aaaaaaaaaa');
    </script>

    <script>
        var merge1 = function(nums1, m, nums2, n) {
            let p = 0, q = 0;
            let tmp = []
            while (p < m || q < n) {
                if (nums1[p] <= nums2[q] && p < m && q < n) {
                    tmp.push(nums1[p]);
                    p++;
                } else if (nums1[p] > nums2[q] && p < m && q < n) {
                    tmp.push(nums2[q])
                    q++;
                } else if (p >= m && q < n) {
                    tmp.push(nums2[q])
                    q++;
                } else if (q >= n && p < m) {
                    tmp.push(nums1[p])
                    p++;
                }
            }

            for(let i = 0; i < tmp.length; i++) {
                nums1[i] = tmp[i]
            }
        }
        var nums1 = [1, 2, 3, 0, 0, 0];
        var nums2 = [2, 5, 6];
        merge1(nums1, 3, nums2, 3);
        console.log(nums1);
    </script>

</body>

</html>